function F3=three(sol,model)
 J_inf= 10e+10;
    n = model.n;
    H = model.H;
    
    % 输入
    sol = Transforms(sol,model);
    
    x=sol(1,1:model.n);
    y=sol(1,model.n+1:2*model.n);
    z=sol(1,2*model.n+1:end);

    % 起点
    xs=model.start(1);
    ys=model.start(2);
    zs=model.start(3);
    
    % 终点
    xf=model.end(1);
    yf=model.end(2);
    zf=model.end(3);
    
    x_all = [xs x xf];
    y_all = [ys y yf];
    z_all = [zs z zf];
    
    N = size(x_all,2); % 路径长度
    
    % 海平面高度 = z_relative + ground_level
    z_abs = zeros(1,N);
    for i = 1:N
        z_abs(i) = z_all(i) + H(ceil(y_all(i)),ceil(x_all(i)));
    end
      % F3 - 高度成本
    %  在这个计算中，z, zmin和zmax是相对于地面的高度
    zmax = model.zmax;
    zmin = model.zmin;
    F3 = 0;
    for i=1:n        
        if z(i) <= 0   % 撞向地面
            F3_node = J_inf;
        else
            F3_node = abs(z(i) - (zmax + zmin)/2); %高度成本代价计算
        end
        
        F3 = F3 + F3_node;
    end
end